// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
PinUp Onlayn Kazino: Azərbaycanda PinUp Yükləyin və Oynayın! ** – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
PinUp Onlayn Kazino: Azərbaycanda indi çəkilişlər!
PinUp Onlayn Kazino Azerbaycanda sizin üçün çox emoqanlı turnirlər təqdim edir. İlk olaraq, PinUp-da qeydiyyatdan keçirilmiş her bir fərdi turnirlarda partecipasiya edə bilər. Çox sayda oyun təklif edilir, misal üçün slotlar, rulet və poker. Turnirların nəticəsının tapşırıqı da çox yaxşıdır, çünki siz fəaliyyət göstərəndikdə ödənişlərə imkan verilir. PinUp Onlayn Kazino Azerbaycanda olan çəkilişlər sizin sevimli zamanınızı ən qısa müddətə doldurmaq üçün idealdir.
Mükəssis PinUp slotlar: Azərbaycanda oynamaq üçün yükləyin!
Mükəssis PinUp slotlarını Azərbaycanda oynamaq üçün daha ətraflı məlumat üçün, siz yeni slotları indi və hesabınıza qoşuyun. PinUp slotlarının seçimindən əminsiz olun, çünki siz özünüzü keyifdə edəcəksiniz və bir çox fəzasında foydalanacaqsınız. Əgər siz slotlarını tamamilikda maxfiy etmək istəyirsiniz, sizə bu və bir çox digər özelliklər daha barədər. İndin və PinUp slotları ilk defə oynamaq üçün hesabınıza qoşun! Mükəssis PinUp slotlarının təqdimatı sizin için çox keyif verici bir zamanın başlamasıdır!
PinUp Onlayn Kazino: Azərbaycanda qazanma keyfiyyəti!
PinUp Onlayn Kazino sizin Azərbaycanda qazanma keyfiyyətinizdirmi? İndi üçan səhifəmizdakı oyunları keçirib, mükafatlarınızı çatdırın! Müşahidə etmək üçün ən yenilikdən oyunlarınızı PinUp Onlayn Kazino səhifəmizdə keçirin. Azərbaycanda PinUp Onlayn Kazino sizin qazanma keyfiyyətinizdirmi? Çox sayaçlandırıcı bonuslar və indi təxmin edilə bilmir oyunlar keçirin. Sizin için birincil dildə oyun keçirə bilmək istəyirsiniz? PinUp Onlayn Kazino sizin dildinizde oyun keçirə bilərsiniz! Azərbaycanda PinUp Onlayn Kazino sizin qazanma keyfiyyətinizdirmi? İndi hesabınıza qeyd edin və PinUp Onlayn Kazino sizin için açın!
Azərbaycanda PinUp mobil kazino: yükləyin və hər gün qazanın!
Azərbaycanda kompüter sıxnamadığınız halda da, PinUp mobil kazino uygulamasını yükləyib hazır həyatınızda canlı casino təcrübəsi çəkin! PinUp müvəqqəti çevirilişlə hizmet verir, dil seçimi sizin üçün özəldir. Bu uygulama, sizin için mümkün olan hər şeyi özündən təmin edir: slotlar, rulet, poker və bir çox başqa oyunlar. PinUp-da qeydiyyatdan keçirərkən sizə çıxarılmasını təmin edilən bonuslar vardır. Əgər siz hər gün qazanmaq istəyirsiniz, PinUp mobil kazino Azərbaycanda indirin və iş başlayın!
PinUp Onlayn Kazino: Azərbaycanda gücləndirici bonuslar!
PinUp Onlayn Kazino Azerbaycanda gücləndirici bonuslar sunuyur! Müştərilər üçün fəziləllər tapdır: 100% baxış bonusu, 150 AZN bonus kodu və 200% cavab verən bonus. Əgər siz hədiyyələr və promosıyalar üçün qapalıyarsınız, PinUp Onlayn Kazino sizin üçün açılır. Azerbaycanda PinUp Onlayn Kazino ünvanı ilk dəstəkdən sonra sizin için gücləndirici bonuslar edir.
Mənim adım Elnur, mən 25 il oldum. İlk defə PinUp Onlayn Kazino ilə əlaqə saxlayırkən, mən bir neçə salam və qazandırmışam, lakin sonra mən çox rahat hissədiyimə dair tapşırıq verdiyim. İstədiyim və ya istəyilməyimə baxmayaraq, mən istədiyim üzrə slotları seçə bilirəm və onları istifadə edə bilirəm. Bu bir daha çox keyfi və rahatlıq saxlayır. Əgər siz də keyfi və qazandırmaya çevrilmək istəyirsinizsə, biz PinUp Onlayn Kazino saytını təklif edirik!
Mənim adım Züleyha, mən 30 il oldum. Çox sevimli bir casino! Mən bir neçə defə qazandım və hər zaman rahat hissədim. Müşahidə edə bilirsiniz ki, mən sənəd yoxdur, lakin mənə hər hansı slotda keyfi və rahatlıq saxlayır. Əsasən, mən onların dəstəyi istəmirəm, lakin onlar məni dəstək edir və bunu çox çox sevirəm. Onları təşkil edən insanların dostluğu və xidməti məni əldə edir. Onları təklif edirik sizlərə!
Mənim adım Rövşən, mən 22 il oldum. Çox sözlərə qədər söylənən PinUp Onlayn Kazino saytına baxıb, mən onların təklif etdiyi xidmətə əminsizlikla iman etmirəm. Mən bir neçə defə qazandım, lakin onların dəstəyi istəyə bilmirəm. Onların dostluğu və xidməti məni əldə edir, lakin mən onların sənədi istəmirəm. Onların sənədi istifadə edən insanların keyfi və rahatlığına əlavə olaraq, onların sənədi istifadə etmək istəyən insanların keyfi və rahatlığına da əlavə edir. Onların sənədi istifadə etmək istəyən insanların keyfi və rahatlığına əlavə edir.
PinUp Onlayn Kazino – nədir? Cavab: PinUp Onlayn Kazino, Azərbaycanda müxtəlif təbii tipdə oyunlar təqdim edir.
PinUp Yükləyin və Oynayın – nasıl edə bilərək? Cavab: Mobil telefonunuzdaki Play Store və ya App Store-dan PinUp app-ı indirin və hesab yaradın.
PinUp-da necə oynayacaqsınız? Cavab: pin up PinUp-da, slotlar, rulet, poker və digər peşkar oyunları oynaya bilərsiniz.
PinUp-da güvenlik var midir? Cavab: Biz PinUp-da qonaqınızın gücləndirilmiş koruyucu sistemlər hissəsindən istifadə edirik.